import allure
import jsonpath
from utils.send_request import send_http_request

"""
    为了提取登陆需要的token,或者某条用例需要的数据，
    可以在jsonExData或者sqlExData添加json提取式、sql语句
"""
@allure.step("4.json提取")
def json_extractor(case,all,res):
    if case['jsonExData']:
        for key, value in eval(case["jsonExData"]).items():
            value = jsonpath.jsonpath(res.json(), value)[0]
            all[key] = value


def jdbc_extractor(case,all):
    # 数据库提取
    if case["sqlExData"]:
        with allure.step("4.JDBC提取"):
        # case["sqlExData"]返回值是字符串，通过eval()转换成字典
            for key, value in eval(case["sqlExData"]).items():
                value = send_http_request(value)
                all[key] = value